package com.mind.adjust.service;

import com.mind.adjust.domain.vo.*;
import com.mind.adjust.domain.vo.rulepassdetail.RulePassDetailListVo;
import com.mind.customer.domain.vo.RulePassRateListVo;
import com.mind.system.domain.AjTicketTask;

import java.util.List;

/**
 * 单据任务(AjTicketTask)表服务接口
 *
 * @author makejava
 * @since 2024-07-17 22:20:04
 */
public interface AjTicketTaskService {

    /**
     * 查询单据任务信息集合
     * 
     * @param ticketTask 单据任务信息
     * @return 单据任务列表
     */
    public List<AjTicketTask> selectTicketTaskList(AjTicketTask ticketTask);

    /**
     * 通过单据任务ID查询单据任务信息
     * 
     * @param ticketTaskId 单据任务ID
     * @return 角色对象信息
     */
    public AjTicketTask selectTicketTaskById(Long ticketTaskId);


    /**
     * 删除单据任务信息
     * 
     * @param ticketTaskId 单据任务ID
     * @return 结果
     */
    public int deleteTicketTaskById(Long ticketTaskId);

    /**
     * 批量删除单据任务信息
     * 
     * @param ticketTaskIds 需要删除的单据任务ID
     * @return 结果
     */
    public int deleteTicketTaskByIds(Long[] ticketTaskIds);

    /**
     * 新增保存单据任务信息
     * 
     * @param ticketTask 单据任务信息
     * @return 结果
     */
    public int insertTicketTask(AjTicketTask ticketTask);

    /**
     * 修改保存单据任务信息
     * 
     * @param ticketTask 单据任务信息
     * @return 结果
     */
    public int updateTicketTask(AjTicketTask ticketTask);
    
    
    /**
     * 批量插入
     *
     * @param ticketTaskList 附件类型信息
     * @return 结果
     */
    int batchInsert(List<AjTicketTask> ticketTaskList);

    /**
     *
     * @param ticketId
     * @return
     */
    AjTicketTask selectTicketTaskByTicketId(String ticketId);

    /**
     *
     * @param ticketId
     * @return
     */
    AjTicketTask selectLastVersionTask(String ticketId);

    /**
     *
     * @param task
     * @return
     */
    int check(AjTicketTask task);

    /**
     *
     * @param statusList
     * @return
     */
    List<AjTicketTask> selectByStatusList(String ticketId, List<Integer> statusList);

    List<TicketDetailListVo> smartCheckDetail(AjTicketTask task);

    List<RulePassDetailListVo> smartCheckPassList(AjTicketTask task);

    List<RulePassRateListVo> smartCheckPassRate(AjTicketTask task);

    List<RuleOverDetailVo> smartCheckRuleOverRate(AjTicketTask task);
}
